Code of Elevator System
Write object-oriented code to implement the design of the elevator system problem.
We’ve discussed different aspects of the elevator system and observed the attributes attached to the problem using various UML diagrams. Let’s explore the more practical side of things, where we will work on implementing the elevator system using multiple languages. This is usually the last step in an object-oriented design interview process.
We have chosen the following languages to write the skeleton code of the different classes present in the elevator control system:
Java
C#
Python
C++
JavaScript
Elevator system classes#
In this section, we’ll provide the skeleton code of the classes designed in the class diagram lesson.
Note: For simplicity, we aren’t defining getter and setter functions. The reader can assume that all class attributes are private and accessed through their respective public getter methods and modified only through their public methods function.
Enumerations#
First of all, we will define all the enumerations required in the elevator system. According to the class diagram, there are three enumerations used in the system i.e., ElevatorState
, Direction
and DoorState
. The code to implement these enumerations is as follows:
Note: JavaScript does not support enumerations, so we will be using the
Object.freeze()
method as an alternative that freezes an object and prevents further modifications.
Button#
This section contains the implementation of a Button
class and its subclasses which are HallButton
and the ElevatorButton
. The Button
class has a pure virtual function isPressed()
in it. The code to implement this relationship is given below:
Elevator panel and hall panel #
ElevatorPanel
and the HallPanel
are classes which use the instance of ElevatorButton
and HallButton
respectively. The code to implement these classes is provided below:
Display #
This component shows the implementation of the Display
class. This class is responsible for showing the display inside and outside of the elevator cars. The code to implement this class is shown below:
Elevator car #
This section contains the definition of the ElevatorCar
class. An elevator car contains the instance of Door
, Display
, and ElevatorPanel
. The implementation of this class is represented below:
Door and floor #
This section contains the code for the Door
and Floor
classes. In the Door
class, the enumeration DoorState
is used and the Floor
class contains the instances of Display
and HallPanel
. The implementation of this class is given below:
Elevator system and building #
The final class of an elevator system is the ElevatorSystem
class which will be a Singleton class, which means that the entire system will have only one instance of this class. Moreover, there is a Building
class that contains the instances of Floor
and ElevatorCar
. The implementation of these Singleton classes are provided below:
Wrapping up#
We've explored the complete design of an elevator control system in this chapter. We've looked at how a basic elevator system can be visualized using various UML diagrams and designed using object-oriented principles and design patterns.
Activity Diagram for the Elevator System
Getting Ready: Library Management System